package com.ylr.user.common.enums;

import com.ylr.base.common.dto.NameValue;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wyw
 * date: 2023-05-12 13:54:30
 * className: UserEnum
 * version: 1.0
 * description:
 */
@Getter
@AllArgsConstructor
public enum UserEnum {

    NULL(null, null),
    /*
        系统用户表字段字典值
     */
    // 状态[0-正常 1-风控 2-禁用]
    NORMAL_STATUS(0, "正常"), RISK_STATUS(1, "风控"), DISABLE_STATUS(2, "禁用"),
    // 部门领导标记[0-是 1-否]
    LEADER_YES(0, "是"), LEADER_NO(1, "不是")
    ;

    /**
     * 值
     */
    private final Integer value;

    /**
     * 名称
     */
    private final String name;

    /**
     * 获取状态枚举列表
     */
    public static List<NameValue<Integer>> getStatusEnumList() {
        List<NameValue<Integer>> list = new ArrayList<>();
        list.add(new NameValue<>(NORMAL_STATUS.name, NORMAL_STATUS.value));
        list.add(new NameValue<>(RISK_STATUS.name, RISK_STATUS.value));
        list.add(new NameValue<>(DISABLE_STATUS.name, DISABLE_STATUS.value));
        return list;
    }

    /**
     * 获取状态枚举对象
     * @param value 值
     * @return 部门领导标记枚举对象
     */
    public static UserEnum getStatusEnum(Integer value) {
        if (NORMAL_STATUS.value.equals(value)) {
            return NORMAL_STATUS;
        }
        if (RISK_STATUS.value.equals(value)) {
            return RISK_STATUS;
        }
        if (DISABLE_STATUS.value.equals(value)) {
            return DISABLE_STATUS;
        }
        return NULL;
    }

    /**
     * 校验状态枚举值
     * @param value 值
     * @return true-错误 false-正确
     */
    public static boolean isStatusFail(Integer value) {
        return getStatusEnum(value) == NULL;
    }

    /**
     * 获取部门领导标记枚举列表
     */
    public static List<NameValue<Integer>> getLeaderEnumList() {
        List<NameValue<Integer>> list = new ArrayList<>();
        list.add(new NameValue<>(LEADER_YES.name, LEADER_YES.value));
        list.add(new NameValue<>(LEADER_NO.name, LEADER_NO.value));
        return list;
    }

    /**
     * 获取部门领导标记枚举对象
     * @param value 值
     * @return 部门领导标记枚举对象
     */
    public static UserEnum getLeaderEnum(Integer value) {
        if (LEADER_YES.value.equals(value)) {
            return LEADER_YES;
        }
        if (LEADER_NO.value.equals(value)) {
            return LEADER_NO;
        }
        return NULL;
    }

    /**
     * 校验部门领导标记枚举值
     * @param value 值
     * @return true-错误 false-正确
     */
    public static boolean isLeaderFail(Integer value) {
        return getLeaderEnum(value) == NULL;
    }
}
